var _page = 1, _pageSzie = 10;

function base() {
    return {
        /*新闻管理*/
        ContentNews: function () {
            dataFun();

            function dataFun() {
                var cols = [[
                    {
                        field: 'id', templet: function (val) {
                            return val.LAY_INDEX
                        }, align: 'center', title: '序号'
                    }
                    , {field: 'title', align: 'center', title: '新闻标题'}
                    , {field: 'imgCover', align: 'center', title: '封面图'}
                    , {field: 'source', align: 'center', title: '新闻来源'}
                    , {field: 'details', align: 'center', title: '新闻内容'}
                    , {
                        field: 'show', align: 'center', title: '是否展示', templet: function (val) {
                            var boolean = val.isShow;
                            if (boolean == true) {
                                return '是'
                            } else {
                                return '否'
                            }
                        }
                    }
                    , {
                        field: 'top', align: 'center', title: '是否置顶', templet: function (val) {
                            var boolean = val.isTop;
                            if (boolean == true) {
                                return '是'
                            } else {
                                return '否'
                            }
                        }
                    }
                    , {field: 'createTime', align: 'center', title: '创建时间', width: 180}
                    , {fixed: 'right', align: 'center', title: '操作', toolbar: '#operation_news_List', width: 150}
                ]];
                ele = '#content_news_list';
                method = "get";
                url = server_url.ContentnewsLists;
                table_reload_id = "contentNewsReload";
                layui.use(['form', 'layedit', 'laydate', 'table'], function () {
                    var form = layui.form
                        , $ = layui.jquery
                        , layer = layui.layer
                        , layedit = layui.layedit
                        , laydate = layui.laydate
                        , table = layui.table;
                    var initTable = Common().initTable(ele, url, method, cols, table, table_reload_id);
                    table.on('tool(content_news)', function (obj) {
                        var data = obj.data; //获得当前行数据
                        var layEvent = obj.event; //获得 lay-event 对应的值（也可以是表头的 event 参数对应的值）
                        var tr = obj.tr; //获得当前行 tr 的DOM对象
                        if (layEvent === 'detail') {//查看

                        } else if (layEvent === 'del') { //删除
                            layer.confirm('确定删除', function (index) {
                                //向服务端发送删除指令
                                $.ajax({
                                    type: "POST",
                                    url: server_url.DelContentnews,
                                    data: {id: data.id},
                                    dataType: "json",
                                    success: function (data) {
                                        Common().responseCode(data.code, data.msg);
                                        obj.del(); //删除对应行（tr）的DOM结构，并更新缓存
                                        layer.close(index);
                                        //表刷新方法
                                        table.reload(table_reload_id, {
                                            url: url
                                            , where: {} //设定异步数据接口的额外参数
                                        });
                                    }
                                });
                            });
                        } else if (layEvent === 'edit') { //编辑

                            location.href = server_url.ToEditContentnews + "?id=" + data.id
                        }
                    });

                });
            }
        }
    }
}


function Common() {
    var initTable = function (ele, url, method, cols, table, table_id, doneCallBack) {
        return table.render({
            elem: ele
            , url: url
            , method: method
            , cellMinWidth: 80 //全局定义常规单元格的最小宽度，layui 2.2.1 新增
            , cols: cols
            ,
            request: {
                pageName: "page" //页码的参数名称，默认：page
                , limitName: 'pageSize' //每页数据量的参数名，默认：limit
            }
            , parseData: function (res) { //res 即为原始返回的数据
                var msg = res.msg;
                var code = res.code;
                responseCode(code, msg);
                return {
                    "code": res.code, //解析接口状态
                    "msg": msg, //解析提示文本
                    "count": res.data.total, //解析数据长度
                    "data": res.data.records //解析数据列表
                };
            }
            , id: table_id
            , page: {
                layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
                , theme: '#0092EF'
                , limit: _pageSzie
                , page: _page
            },
            done: function (res, curr, count) {
                this.where = {};
                /* if (typeof (doneCallBack) === "function") {
                     doneCallBack(res);
                 }*/
            }
        });
    };

    /*异常数据处理*/
    function responseCode(code, msg) {
        if (code == 1 || code == -1 || code == 101) {
            layer.msg(msg);
            return;
        } else if (code == 100) {
            layer.msg(msg);
            parent.location.reload();
            return;
        }
    };

    function uploadeImgCom(editor) {
        // 配置服务器端地址
        //配置富文本
        initEdit();

        function initEdit() {
            editor.customConfig.uploadImgServer = '/common/file/uploadAliOss';
            editor.customConfig.withCredentials = true;
            editor.customConfig.uploadImgMaxLength = 10;
            editor.customConfig.uploadFileName = 'file';
            editor.customConfig.uploadImgMaxSize = 10 * 1024 * 1024;
            editor.customConfig.debug = true;

            editor.customConfig.uploadImgHooks = {
                before: function (xhr, editor, files) {
                    // 图片上传之前触发
                    // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象，files 是选择的图片文件

                    // 如果返回的结果是 {prevent: true, msg: 'xxxx'} 则表示用户放弃上传
                    // return {
                    //     prevent: true,
                    //     msg: '放弃上传'
                    // }
                },
                success: function (xhr, editor, result) {
                    // 图片上传并返回结果，图片插入成功之后触发
                    // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象，result 是服务器端返回的结果
                },
                fail: function (xhr, editor, result) {
                    // 图片上传并返回结果，但图片插入错误时触发
                    // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象，result 是服务器端返回的结果

                    console.log("失败" + result)
                },
                error: function (xhr, editor) {
                    console.log("上传出错" + result);
                    // 图片上传出错时触发
                    // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象
                },
                timeout: function (xhr, editor) {
                    // 图片上传超时时触发
                    // xhr 是 XMLHttpRequst 对象，editor 是编辑器对象
                },
                // 如果服务器端返回的不是 {errno:0, data: [...]} 这种格式，可使用该配置
                // （但是，服务器端返回的必须是一个 JSON 格式字符串！！！否则会报错）
                customInsert: function (insertImg, result, editor) {
                    // 图片上传并返回结果，自定义插入图片的事件（而不是编辑器自动插入图片！！！）
                    // insertImg 是插入图片的函数，editor 是编辑器对象，result 是服务器端返回的结果
                    // 举例：假如上传图片成功后，服务器端返回的是 {url:'....'} 这种格式，即可这样插入图片：
                    console.log(result);
                    var url = view_img_url + result.data;
                    insertImg(url)
                    // result 必须是一个 JSON 格式字符串！！！否则报错
                }
            };
            editor.create()
        }


    }

    return {
        initTable: function (ele, url, method, cols, table, doneCallBack) {
            return initTable(ele, url, method, cols, table, doneCallBack);
        },
        responseCode: function (code, msg) {
            return responseCode(code, msg)
        },
        uploadeImgCom: function (editor) {
            return uploadeImgCom(editor)
        }
    }
}

